/*     */ package eos.moe.dragoncore;
/*     */ 
/*     */ import java.io.InputStream;
/*     */ import java.nio.ByteBuffer;
/*     */ import java.nio.ShortBuffer;
/*     */ import java.util.concurrent.ArrayBlockingQueue;
/*     */ import javax.sound.sampled.AudioFormat;
/*     */ import javax.sound.sampled.AudioSystem;
/*     */ import javax.sound.sampled.DataLine;
/*     */ import javax.sound.sampled.SourceDataLine;
/*     */ import net.minecraft.client.renderer.GlStateManager;
/*     */ import org.bytedeco.javacv.FFmpegFrameGrabber;
/*     */ import org.bytedeco.javacv.Frame;
/*     */ import org.lwjgl.opengl.GL11;
/*     */ import org.lwjgl.opengl.GL15;
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ public class ko
/*     */ {
/*     */   private static final int k = 100;
/*  25 */   private final int[] o = new int[2];
/*  26 */   private final int[] y = new int[2];
/*  27 */   private final ByteBuffer[] h = new ByteBuffer[2];
/*  28 */   private final ArrayBlockingQueue<Frame> u = new ArrayBlockingQueue<>(100);
/*  29 */   private final ArrayBlockingQueue<Frame> j = new ArrayBlockingQueue<>(100);
/*     */   public SourceDataLine c;
/*     */   private long r;
/*     */   private FFmpegFrameGrabber f;
/*  33 */   private int s = 0;
/*  34 */   private int m = 0;
/*     */   private float l;
/*  36 */   private int t = 0;
/*  37 */   private int d = 0;
/*  38 */   private int z = 0;
/*  39 */   private int i = 1;
/*     */ 
/*     */   
/*     */   private boolean w;
/*     */ 
/*     */   
/*     */   private boolean q;
/*     */ 
/*     */   
/*     */   private boolean g;
/*     */ 
/*     */ 
/*     */   
/*     */   public void v(InputStream inputStream) {
/*     */     try {
/*  54 */       this.f = new FFmpegFrameGrabber(inputStream);
/*  55 */       this.f.setVideoOption("threads", "1");
/*  56 */       this.f.setOption("hwaccel", "cuda");
/*  57 */       this.f.setOption("hwaccel_output_format", "cuda");
/*     */       
/*  59 */       this.f.setOption("tune", "zerolatency");
/*  60 */       this.f.start();
/*  61 */       this.l = 1.0E9F / (float)this.f.getVideoFrameRate();
/*     */ 
/*     */       
/*  64 */       AudioFormat audioFormat = new AudioFormat(this.f.getSampleRate(), 16, this.f.getAudioChannels(), true, true);
/*  65 */       DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
/*     */       try {
/*  67 */         this.c = (SourceDataLine)AudioSystem.getLine(info);
/*  68 */         this.c.open(audioFormat);
/*  69 */         this.c.start();
/*  70 */       } catch (Exception exception) {
/*  71 */         nm.m.y("视频的音频无法加载", new Object[] { exception });
/*  72 */         exception.printStackTrace();
/*     */       } 
/*  74 */       this.q = true;
/*  75 */     } catch (Exception exception) {
/*  76 */       nm.m.y("视频文件无法加载", new Object[] { exception });
/*  77 */       exception.printStackTrace();
/*     */     } 
/*     */   }
/*     */   
/*     */   public boolean z() {
/*  82 */     return this.q;
/*     */   }
/*     */   
/*     */   public int h() {
/*  86 */     return (this.f == null) ? 0 : this.f.getImageHeight();
/*     */   }
/*     */   
/*     */   public int z() {
/*  90 */     return (this.f == null) ? 0 : this.f.getImageWidth();
/*     */   }
/*     */   
/*     */   public int v() {
/*  94 */     return (this.f == null) ? 0 : (this.f.getBitsPerPixel() / 8);
/*     */   }
/*     */   
/*     */   public boolean v() {
/*  98 */     return (this.f.getFormatContext() == null || this.f.getFormatContext().isNull());
/*     */   }
/*     */   
/*     */   public void z() {
/* 102 */     this.w = true;
/*     */   }
/*     */ 
/*     */   
/*     */   public void z(double d1, double d2, double d3, double d4, double d5, double d6, double d7, double d8) {
/* 107 */     if (!this.g) {
/* 108 */       z(this.f.getImageWidth(), this.f.getImageHeight(), 3);
/* 109 */       v(this.f.getImageWidth(), this.f.getImageHeight(), 3);
/* 110 */       this.g = true;
/*     */     } 
/* 112 */     if (this.f.getFormatContext() == null || this.f.getFormatContext().isNull()) {
/*     */       return;
/*     */     }
/*     */     
/*     */     try {
/* 117 */       boolean bool = false;
/*     */       
/* 119 */       int i = 2;
/* 120 */       while (i > 0) {
/* 121 */         i--;
/* 122 */         if (!this.w || this.j.size() < 20 || this.u.size() < 20) {
/* 123 */           Frame frame = this.f.grab();
/* 124 */           if (frame == null) {
/* 125 */             this.f.stop();
/*     */             break;
/*     */           } 
/* 128 */           if (frame.samples != null) {
/* 129 */             this.m++;
/* 130 */             this.j.put(frame.clone());
/*     */           } 
/* 132 */           if (frame.image != null) {
/* 133 */             this.s++;
/* 134 */             this.u.put(frame.clone());
/*     */           } 
/* 136 */           frame.close();
/*     */         } 
/* 138 */         if (this.s > 3 && this.j.size() > 3) {
/* 139 */           this.w = true;
/* 140 */           if (this.r == 0L) {
/* 141 */             this.r = System.nanoTime();
/*     */           }
/*     */         } 
/* 144 */         if (!this.j.isEmpty() && this.w) {
/* 145 */           Frame frame = this.j.peek();
/* 146 */           if (frame.timestamp * 1000L <= System.nanoTime() - this.r && this.c != null) {
/* 147 */             ShortBuffer shortBuffer = (ShortBuffer)((Frame)this.j.poll()).samples[0];
/* 148 */             shortBuffer.rewind();
/* 149 */             ByteBuffer byteBuffer = ByteBuffer.allocate(shortBuffer.capacity() * 2);
/* 150 */             byteBuffer.asShortBuffer().put(shortBuffer);
/* 151 */             this.c.write(byteBuffer.array(), 0, byteBuffer.capacity());
/*     */           } 
/*     */         } 
/*     */ 
/*     */         
/* 156 */         if (this.w && !this.u.isEmpty()) {
/* 157 */           Frame frame = this.u.peek();
/* 158 */           if (frame.timestamp * 1000L <= System.nanoTime() - this.r) {
/* 159 */             frame = this.u.poll();
/* 160 */             v((ByteBuffer)frame.image[0]);
/*     */             
/* 162 */             frame.close();
/* 163 */             this.t++;
/* 164 */             v(d1, d2, d3, d4, d5, d6, d7, d8);
/* 165 */             bool = true;
/*     */           } 
/*     */         } 
/*     */       } 
/* 169 */       if (!bool) {
/* 170 */         v(d1, d2, d3, d4, d5, d6, d7, d8);
/*     */       
/*     */       }
/*     */     }
/* 174 */     catch (Exception exception) {
/*     */       try {
/* 176 */         this.f.stop();
/* 177 */       } catch (Exception exception1) {}
/*     */ 
/*     */       
/* 180 */       exception.printStackTrace();
/*     */     } 
/*     */   }
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */ 
/*     */   
/*     */   public void v() {
/*     */     try {
/* 259 */       if (this.f != null) {
/* 260 */         for (Frame frame : this.u) {
/* 261 */           frame.close();
/*     */         }
/* 263 */         this.f.stop();
/* 264 */         if (this.c != null) {
/* 265 */           this.c.stop();
/*     */         }
/*     */         
/* 268 */         if (this.g) {
/* 269 */           for (int i = 0; i < 2; i++) {
/* 270 */             GlStateManager.func_179150_h(this.y[i]);
/* 271 */             GL15.glDeleteBuffers(this.o[i]);
/*     */           } 
/*     */         }
/*     */       } 
/* 275 */     } catch (Exception exception) {}
/*     */   }
/*     */ }


/* Location:              D:\fanbian\[D][龙之核心]DragonCore-2.6.0.3.jar!\eos\moe\dragoncore\ko.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */